![]() |
ル−タなど IP Adress を割り当てた機器が複数あり、アドレスを忘れてしまい、Lan内をスキャンする必要にせまられ作りました。 サンプル プログラムを探したのですが、なかなか見つからず(C#では色々ありました)、やっと、YouTubeで見つけ利用させてもらいました. Indyの使い方がC++Builderのヘルプでも解説が見つからず良く分かりませんでした。
|
|
//--------------------------------------------------------------------------- #include#pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "IdBaseComponent" #pragma link "IdComponent" #pragma link "IdRawBase" #pragma link "IdIcmpClient" #pragma link "IdRawClient" #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- int i; void ping_sub(String host) { Form1->ICMP1->Host=host; try{ Form1->ICMP1->Ping(); Sleep(10); Application->ProcessMessages(); } catch(...) { if(Form1->CheckBox1->Checked==false) { Form1->ListBox1->Items->Add("Ping faild !"); Application->ProcessMessages(); } else { // Form1->ListBox1->Items->Add("*"); Application->ProcessMessages(); } } } void __fastcall TForm1::PingClick(TObject *Sender) //Start { String adr,adr1,c; ListBox1->Items->Clear(); if(CheckBox1->Checked==false) { ping_sub(EHost1->Text); Button1->Enabled=true; ListBox1->Items->Add(""); ListBox1->Items->Add("終了"); } else { adr=Edit1->Text+"."+Edit2->Text+"."+ Edit3->Text+"."; Button1->Enabled=false; for(i=1;i<256;i++) { c=IntToStr(i); adr1=adr+c; ping_sub(adr1); Application->ProcessMessages(); Label3->Caption=adr1; } ListBox1->Items->Add(""); ListBox1->Items->Add("終了"); Button1->Enabled=true; } } //--------------------------------------------------------------------------- void __fastcall TForm1::ICMP1Reply(TComponent *ASender, TReplyStatus * const AReplyStatus) { UnicodeString Result; Result = "Received "+UnicodeString(AReplyStatus->BytesReceived)+ " bytees from "+AReplyStatus->FromIpAddress+ ", time = "+UnicodeString(AReplyStatus->MsRoundTripTime)+ " ms, ttl ="+UnicodeString((int)AReplyStatus->TimeToLive); if(Result.Pos0("0.0.0")<0) ListBox1->Items->Add(Result); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::CheckBox1Click(TObject *Sender) { if(CheckBox1->Checked==true) { Edit1->Enabled=true; Edit2->Enabled=true; Edit3->Enabled=true; EHost1->Enabled=false; Button1->Enabled=false; Button2->Enabled=true; } else { Edit1->Enabled=false; Edit2->Enabled=false; Edit3->Enabled=false; EHost1->Enabled=true; Button1->Enabled=true; Button2->Enabled=false; } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormActivate(TObject *Sender) { Form1->Top=100; Form1->Left=700; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { i=255; Button1->Enabled=true; } //---------------------------------------------------------------------------